package org.francho.apps.unutopia_android.widget; import org.francho.apps.unutopia_android.R; import org.francho.apps.unutopia_android.data.FeedContract; import org.francho.apps.unutopia_android.data.FeedContract.Articles; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.support.v4.widget.SimpleCursorAdapter; import android.text.format.DateUtils; import android.widget.TextView; public class FeedsAdapter extends SimpleCursorAdapter { private static final String[] FROM = new String[] { FeedContract.Articles.TITLE, FeedContract.Articles.PUB_DATE }; private static final int[] TO = new int[] { R.id.feed_listitem_title, R.id.feed_listitem_date }; private Context context; public FeedsAdapter(Context context) { super(context, R.layout.feed_listitem , null, FROM, TO, FLAG_REGISTER_CONTENT_OBSERVER); this.context = context; initArticlesCursor(context); } private void initArticlesCursor(Context context) { Uri uri = Articles.getUri(); String[] projection = new String[]{FeedContract.Articles._ID, FeedContract.Articles.TITLE, FeedContract.Articles.PUB_DATE}; String selection = null; String[] selectionArgs = null; String sortOrder = FeedContract.Articles.PUB_DATE + " ASC"; final Cursor cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder); this.changeCursor(cursor); } @Override public void setViewText(TextView v, String text) { if(isDateView(v)) { text = getFormattedDate(text); } super.setViewText(v, text); } private boolean isDateView(TextView v) { return v.getId() == R.id.feed_listitem_date; } private String getFormattedDate(String text) { Long millis = Long.parseLong(text); return (String)DateUtils.getRelativeTimeSpanString(context, millis); } }